// 按需导入发送请求的函数
import { request } from '../../request/index.js'
// 默认导入的方式导入runtime.js文件
import regeneratorRuntime from '../../lib/runtime/runtime.js'
Page({
  data: {
    tabs: [{
      id: 0,
      name: "全部",
      isActive: true
    },
    {
      id: 1,
      name: "待付款",
      isActive: false
    },
    {
      id: 2,
      name: "待收货",
      isActive: false
    },
    {
      id: 3,
      name: "退货/退款",
      isActive: false
    }],
    // 订单列表数据
    orderList: []
  },
  onShow() {
    // 先判断缓存中有没有token，没有的话就跳转到授权页面获取token，并阻止代码向下执行 
    const token = wx.getStorageSync("token")
    if (!token) {
      wx.navigateTo({
        url: '/pages/auth/index'
      });
      return
    }
    // 拿到页面栈数组pages
    const pages = getCurrentPages()
    // 拿到当前的页面的传递过来的请求参数type
    const { type } = pages[pages.length - 1].options

    // 拿到type后，直接调用changeTitleItemByIndex方法来实现被激活tab项，传递实参为type-1
    this.changeTitleItemByIndex(type - 1)

    // 调用获取订单列表的函数
    this.getOrderList(type)
  },
  // 发送请求获取订单列表数据的函数
  async getOrderList(type) {
    const res = await request({ url: "/my/orders/all", data: { type } })
    const orderList = res.orders;
    // 保存到data中去
    this.setData({
      orderList: orderList.map(v => ({ ...v, create_time_new: new Date(v.create_time * 1000).toLocaleString() }))
    })
  },
  // tabs栏位切换事件 从子组件传递值过来
  bindReceiveIndex(e) {
    // 获取到子组件传递过来的索引被点击项的索引index
    const index = e.detail
    // 直接调用changeTitleItemByIndex函数，传递实参为index
    this.changeTitleItemByIndex(index)
    // tab切换的时候，调用getOrderList方法发送请求获取当前点击的这个tab项的订单列表数据
    this.getOrderList(index + 1)
  },
  // 封装一个函数用来实现根据索引来改变被激活tab项的
  changeTitleItemByIndex(index) {
    const { tabs } = this.data
    // 遍历tabs把里面的索引为index的tab项的isActive改为true，否则为fasle
    tabs.forEach((v, i) => i === index ? v.isActive = true : v.isActive = false)
    // 对修改后的tabs重新赋值到data中去
    this.setData({
      tabs
    })
  }

})